home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!snorkelwacker!apple!netcom!amdcad!sun!mipsdal.mips.com
- From: riley@mipsdal.mips.com (Riley Rainey)
- Newsgroups: comp.sources.x
- Subject: v09i071: acm, X aerial combat simulation, Part03/05
- Message-ID: <143450@sun.Eng.Sun.COM>
- Date: 7 Oct 90 18:13:05 GMT
- References: <csx-09i069:acm@uunet.UU.NET>
- Sender: news@sun.Eng.Sun.COM
- Lines: 2455
- Approved: argv@sun.com
-
- Submitted-by: riley@mipsdal.mips.com (Riley Rainey)
- Posting-number: Volume 9, Issue 71
- Archive-name: acm/part03
-
- echo x - ./fsim/init.c
- sed 's/^X//' >./fsim/init.c <<'*-*-END-of-./fsim/init.c-*-*'
- X/*
- X * xflight : an aerial combat simulator for X
- X *
- X * Written by Riley Rainey, riley@mips.com
- X *
- X * Permission to use, copy, modify and distribute (without charge) this
- X * software, documentation, images, etc. is granted, provided that this
- X * comment and the author's name is retained.
- X *
- X */
- X
- X#include "pm.h"
- X
- Xextern craftType *newCraft();
- X
- Xint init () {
- X
- X FILE *f;
- X static VObject *o1, *o2;
- X int i;
- X craft *p;
- X
- X for ((i=0, p=stbl); i<MAXSURFACE; (++i, ++p))
- X p->type = CT_FREE;
- X
- X for ((i=0, p=ptbl); i<MAXPLAYERS; (++i, ++p)) {
- X p->index = i;
- X p->type = CT_FREE;
- X }
- X
- X for ((i=0, p=mtbl); i<MAXPROJECTILES; (++i, ++p))
- X p->type = CT_FREE;
- X
- X/* HUDColor = VAllocColor ("#ffc800"); */
- X HUDColor = VAllocColor ("white");
- X/* groundColor = VAllocColor ("#29350B"); */
- X/* groundColor = VAllocColor ("#717844"); */
- X groundColor = VAllocColor ("#879349");
- X whiteColor = VAllocColor ("white");
- X blackColor = VAllocColor ("black");
- X
- X/*
- X * Read in the runway and place it.
- X */
- X
- X f = fopen ("rwy", "r");
- X stbl[1].type = CT_SURFACE;
- X stbl[1].cinfo = newCraft();
- X stbl[1].cinfo->object = VReadObject(f);
- X fclose (f);
- X stbl[1].Sg.x = 0.0;
- X stbl[1].Sg.y = 0.0;
- X stbl[1].Sg.z = 0.0;
- X stbl[1].curHeading = stbl[1].curPitch = stbl[1].curRoll = 0.0;
- X
- X f = fopen ("rwy2", "r");
- X stbl[0].type = CT_SURFACE;
- X stbl[0].cinfo = newCraft();
- X stbl[0].cinfo->object = VReadObject(f);
- X fclose (f);
- X stbl[0].Sg.x = 4000.0;
- X stbl[0].Sg.y = 3000.0;
- X stbl[0].Sg.z = 0.0;
- X stbl[0].curHeading = 300.0 * 3.14159 / 180.0;
- X stbl[0].curPitch = stbl[0].curRoll = 0.0;
- X
- X f = fopen ("tower", "r");
- X stbl[2].type = CT_SURFACE;
- X stbl[2].cinfo = newCraft();
- X stbl[2].cinfo->object = VReadObject(f);
- X fclose (f);
- X stbl[2].Sg.x = 4000.0;
- X stbl[2].Sg.y = -700.0;
- X stbl[2].Sg.z = 0.0;
- X stbl[2].curHeading = stbl[2].curPitch = stbl[2].curRoll = 0.0;
- X
- X f = fopen ("mtn", "r");
- X stbl[3].type = CT_SURFACE;
- X stbl[3].cinfo = newCraft();
- X stbl[3].cinfo->object = VReadObject(f);
- X fclose (f);
- X stbl[3].Sg.x = 20.0 * NM;
- X stbl[3].Sg.y = 6.0 * NM;
- X stbl[3].Sg.z = 0.0;
- X stbl[3].curHeading = DEGtoRAD (30.0);
- X stbl[3].curPitch = stbl[3].curRoll = 0.0;
- X
- X stbl[4].type = CT_SURFACE;
- X stbl[4].cinfo = stbl[3].cinfo;
- X stbl[4].Sg.x = -2.0 * NM;
- X stbl[4].Sg.y = 40.0 * NM;
- X stbl[4].Sg.z = 0.0;
- X stbl[4].curHeading = DEGtoRAD (160.0);
- X stbl[4].curPitch = stbl[4].curRoll = 0.0;
- X
- X stbl[5].type = CT_SURFACE;
- X stbl[5].cinfo = stbl[3].cinfo;
- X stbl[5].Sg.x = -2.6 * NM;
- X stbl[5].Sg.y = 43.0 * NM;
- X stbl[5].Sg.z = 0.0;
- X stbl[5].curHeading = DEGtoRAD (160.0);
- X stbl[5].curPitch = stbl[4].curRoll = 0.0;
- X
- X stbl[6].type = CT_SURFACE;
- X stbl[6].cinfo = stbl[1].cinfo;
- X stbl[6].Sg.x = -0.6 * NM;
- X stbl[6].Sg.y = 49.0 * NM;
- X stbl[6].Sg.z = 0.0;
- X stbl[6].curHeading = DEGtoRAD (0.0);
- X stbl[6].curPitch = stbl[6].curRoll = 0.0;
- X
- X initf16();
- X initmig23();
- X initf16();
- X initmig23();
- X initaim9();
- X initm61a1();
- X
- X/*
- X * This next little hack insures that the color tables correctly include
- X * colors associated with the aircraft.
- X */
- X
- X f = fopen ("mig23", "r");
- X o2 = VReadObject (f);
- X fclose (f);
- X
- X/*
- X * Set time intervals.
- X */
- X
- X deltaT = (double) UPDATE_INTERVAL / 1000000.0;
- X
- X halfDeltaTSquared = 0.5 * deltaT * deltaT;
- X
- X return 0;
- X}
- *-*-END-of-./fsim/init.c-*-*
- echo x - ./fsim/placeCraft.c
- sed 's/^X//' >./fsim/placeCraft.c <<'*-*-END-of-./fsim/placeCraft.c-*-*'
- X/*
- X * xflight : an aerial combat simulator for X
- X *
- X * Written by Riley Rainey, riley@mips.com
- X *
- X * Permission to use, copy, modify and distribute (without charge) this
- X * software, documentation, images, etc. is granted, provided that this
- X * comment and the author's name is retained.
- X *
- X */
- X
- X#include "pm.h"
- X
- Xvoid placeCraft (obj, poly, cnt)
- Xcraft *obj;
- XVPolygon **poly;
- Xint *cnt; {
- X
- X int i, j, k, n;
- X VPoint *q, tmp;
- X VMatrix mtx;
- X VPolygon **p;
- X
- X j = *cnt;
- X
- X VIdentMatrix (&mtx);
- X if (obj->curRoll != 0.0)
- X VRotate (&mtx, XRotation, obj->curRoll);
- X if (obj->curPitch != 0.0)
- X VRotate (&mtx, YRotation, - obj->curPitch);
- X if (obj->curHeading != 0.0)
- X VRotate (&mtx, ZRotation, obj->curHeading);
- X VTranslatePoint (&mtx, obj->Sg);
- X
- X if (obj->cinfo->placeProc != NULL) {
- X (*obj->cinfo->placeProc)(obj, &mtx, poly, cnt);
- X return;
- X }
- X
- X n = obj->cinfo->object->numPolys;
- X p = obj->cinfo->object->polygon;
- X for (i=0; i<n; ++i) {
- X
- X poly[j] = VCopyPolygon(p[i]);
- X for ((k=0, q=poly[j]->vertex); k<poly[j]->numVtces; (++k, ++q)) {
- X VTransform(q, &mtx, &tmp);
- X *q = tmp;
- X }
- X ++j;
- X }
- X
- X *cnt = j;
- X}
- *-*-END-of-./fsim/placeCraft.c-*-*
- echo x - ./fsim/makefile
- sed 's/^X//' >./fsim/makefile <<'*-*-END-of-./fsim/makefile-*-*'
- X#
- X# Makefile for acm; Riley Rainey, 1990
- X#
- XLDFLAGS = -L../V/lib
- XCFLAGS = -g -I../V/lib -systype bsd43
- X
- XOBFILES = server.o \
- X pm.o \
- X flaps.o \
- X droneCalculations.o\
- X init.o \
- X aim9m.o \
- X m61a1.o \
- X weapon.o \
- X newPlayer.o \
- X newPlane.o \
- X missile.o \
- X missileCalculations.o \
- X update.o \
- X doEvents.o \
- X getStick.o \
- X doViews.o \
- X doRadar.o \
- X placeCraft.o \
- X transpose.o \
- X doScale.o
- X
- Xall: acm acms
- X
- Xacm: acm.o
- X cc $(CFLAGS) $(LDFLAGS) -o acm acm.o
- X
- Xacms: $(OBFILES)
- X cc $(CFLAGS) $(LDFLAGS) -o acms $(OBFILES) -lV -lX11 -lm
- X
- Xclean:
- X -rm core *.o
- X
- Xclobber:
- X -rm acm acms *.o core
- X
- Xtar:
- X tar cv acm acms f16 mig23 aim-9 rwy rwy2 tower mtn bullet
- X
- XV2tgif: V2tgif.c
- X cc -O2 -L../V/lib -I../V/lib -o V2tgif V2tgif.c -lV -lX11 -lbsd -lm
- X
- Xmkdepend: makefile
- X mkdepend -c "cc $(CFLAGS)" -e "/include/d" makefile *.c
- X touch mkdepend
- X
- X# DO NOT DELETE THIS LINE -- make depend uses it
- XV2tgif.o: V2tgif.c ../V/lib/Vlib.h
- Xacm.o: acm.c manifest.h
- Xaim9m.o: aim9m.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm \
- X flaps2.xbm flaps3.xbm scale.h ../V/lib/Vlib.h
- XdoEvents.o: doEvents.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm \
- X flaps2.xbm flaps3.xbm scale.h ../V/lib/Vlib.h
- XdoRadar.o: doRadar.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm \
- X flaps2.xbm flaps3.xbm scale.h ../V/lib/Vlib.h
- XdoScale.o: doScale.c scale.h
- XdoViews.o: doViews.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm \
- X flaps2.xbm flaps3.xbm scale.h ../V/lib/Vlib.h
- XdroneCalculations.o: droneCalculations.c pm.h manifest.h eng.xbm \
- X flaps0.xbm flaps1.xbm flaps2.xbm flaps3.xbm scale.h \
- X ../V/lib/Vlib.h
- Xflaps.o: flaps.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm \
- X flaps2.xbm flaps3.xbm scale.h ../V/lib/Vlib.h
- XgetStick.o: getStick.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm \
- X flaps2.xbm flaps3.xbm scale.h ../V/lib/Vlib.h
- Xinit.o: init.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm flaps2.xbm \
- X flaps3.xbm scale.h ../V/lib/Vlib.h
- Xm61a1.o: m61a1.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm \
- X flaps2.xbm flaps3.xbm scale.h ../V/lib/Vlib.h
- Xmissile.o: missile.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm \
- X flaps2.xbm flaps3.xbm scale.h ../V/lib/Vlib.h
- XmissileCalculations.o: missileCalculations.c pm.h manifest.h eng.xbm \
- X flaps0.xbm flaps1.xbm flaps2.xbm flaps3.xbm scale.h \
- X ../V/lib/Vlib.h
- XnewPlane.o: newPlane.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm \
- X flaps2.xbm flaps3.xbm scale.h ../V/lib/Vlib.h
- XnewPlayer.o: newPlayer.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm \
- X flaps2.xbm flaps3.xbm scale.h ../V/lib/Vlib.h
- XplaceCraft.o: placeCraft.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm \
- X flaps2.xbm flaps3.xbm scale.h ../V/lib/Vlib.h
- Xpm.o: pm.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm flaps2.xbm \
- X flaps3.xbm scale.h ../V/lib/Vlib.h
- Xserver.o: server.c manifest.h
- Xtranspose.o: transpose.c ../V/lib/Vlib.h
- Xupdate.o: update.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm \
- X flaps2.xbm flaps3.xbm scale.h ../V/lib/Vlib.h
- Xweapon.o: weapon.c pm.h manifest.h eng.xbm flaps0.xbm flaps1.xbm \
- X flaps2.xbm flaps3.xbm scale.h ../V/lib/Vlib.h
- X# DO NOT DELETE THIS 2nd LINE -- make depend uses it
- *-*-END-of-./fsim/makefile-*-*
- echo x - ./fsim/newPlane.c
- sed 's/^X//' >./fsim/newPlane.c <<'*-*-END-of-./fsim/newPlane.c-*-*'
- X/*
- X * xflight : an aerial combat simulator for X
- X *
- X * Written by Riley Rainey, riley@mips.com
- X *
- X * Permission to use, copy, modify and distribute (without charge) this
- X * software, documentation, images, etc. is granted, provided that this
- X * comment and the author's name is retained.
- X *
- X */
- X
- X#include "pm.h"
- X#include <stdio.h>
- X#include <string.h>
- X
- Xstatic craftType ctype[MAXCRAFTTYPES];
- X
- X#ifndef SYSV
- Xextern char * malloc();
- X
- Xchar *strdup (s)
- Xchar *s; {
- X char *p;
- X
- X p = malloc (strlen(s)+1);
- X strcpy (p, s);
- X return p;
- X}
- X#endif
- X
- XcraftType *lookupCraft (name)
- Xchar * name;
- X{
- X int i;
- X
- X for (i=0; i<MAXCRAFTTYPES; ++i)
- X if (ctype[i].name != (char *) NULL)
- X if (strcmp(name, ctype[i].name) == 0)
- X return &ctype[i];
- X
- X return (craftType *) NULL;
- X}
- X
- XcraftType *newCraft () {
- X
- X int i;
- X
- X for (i=0; i<MAXCRAFTTYPES; ++i)
- X if (ctype[i].name == (char *) NULL) {
- X ctype[i].name = "*allocated*";
- X return &ctype[i];
- X }
- X
- X return (craftType *) NULL;
- X}
- X
- Xvoid initf16 () {
- X
- X int i;
- X FILE *f;
- X craftType *c;
- X
- X c = newCraft();
- X c->name = strdup("f-16c");
- X c->CLOrigin = 0.129871;
- X c->CLSlope = 3.24778;
- X c->CLNegStall = -17.0 * pi / 180.0;
- X c->CLPosStall = 26.0 * pi / 180.0;
- X
- X c->aspectRatio = 3.0;
- X
- X c->CDOrigin = 0.03642;
- X c->CDFactor = -2.54200;
- X c->CDPhase = 0.0349066;
- X
- X c->CDBOrigin = 1.0;
- X c->CDBFactor = -1.0;
- X c->CDBPhase = 0.0;
- X
- X c->CLbeta = -0.8; /* based on 60 ft^2 tail; CL = 1.0; Ivz = 4.0 ft */
- X
- X c->CMOrigin = 0.0;
- X c->CMFactor = -0.95;
- X
- X c->CNOrigin = 0.0;
- X c->CNFactor = -7.50; /* based on 60 ft^2 tail; CL = 1.0; Ivx = 15 ft */
- X
- X c->effElevator = 0.50;
- X c->effAileron = 0.70;
- X c->effRudder = 0.30;
- X
- X c->maxFlap = 40.0 * pi / 180.0; /* 40 degree maximum flap setting */
- X c->cFlap = 0.64279; /* yields Clift of 1.0 at max extension */
- X c->flapRate = 0.1745; /* about 4 seconds to fully extend flaps */
- X
- X c->maxSpeedBrake = DEGtoRAD (80.0);
- X c->cSpeedBrake = 0.02; /* drag coefficient added by speed brakes */
- X c->speedBrakeRate = DEGtoRAD (40.0); /* about 0.25 seconds to fully extend */
- X c->speedBrakeIncr = DEGtoRAD (80.0); /* one keystoke means full extension */
- X
- X VIdentMatrix(&(c->I));
- X c->I.m[0][0] = 50000.0;
- X c->I.m[1][1] = 120000.0;
- X c->I.m[2][2] = 125000.0;
- X c->LDamp = 200000.0;
- X c->MDamp = 1000000.0;
- X c->NDamp = 3600000.0;
- X c->cmSlope = -1.88;
- X c->cmFactor = -1.00;
- X c->cnSlope = 1.00;
- X c->cnFactor = 0.50;
- X c->betaStall = 15.0 * pi / 180.0;
- X
- X c->wingS = 300.0;
- X c->emptyWeight = 14576.0;
- X c->maxFuel = 6972.0;
- X
- X/*
- X * Engine data for F100-PW-100
- X * source "Modern Combat Aircraft Design", Klaus Huenecke
- X */
- X
- X c->maxThrust = 14080.0;
- X c->maxABThrust = 23540.0;
- X c->spFuelConsump = 0.68;
- X c->spABFuelConsump = 2.55;
- X
- X c->groundingPoint.x = 0.0;
- X c->groundingPoint.y = 0.0;
- X c->groundingPoint.z = 6.0;
- X c->viewPoint.x = 12.5;
- X c->viewPoint.y = 0.0;
- X c->viewPoint.z = -3.0;
- X c->crashC = 90.0;
- X
- X c->sCount = 3;
- X c->wStation[0].x = 7.0;
- X c->wStation[0].y = -4.0;
- X c->wStation[0].z = 0.0;
- X c->wStation[1].x = 0.357;
- X c->wStation[1].y = 15.6;
- X c->wStation[1].z = 0.0;
- X c->wStation[2].x = 0.357;
- X c->wStation[2].y = -15.6;
- X c->wStation[2].z = 0.0;
- X
- X c->muStatic = 0.08;
- X c->muKinetic = 0.05;
- X c->muBStatic = 0.7;
- X c->muBKinetic = 0.6;
- X
- X c->maxNWDef = 1.27; /* 72.7 degrees */
- X c->NWIncr = 1.27 / 32.0;
- X c->maxNWS = 100.0 * 6076.0 / 3600.0;
- X c->gearD1 = 13.5;
- X c->gearD2 = -2.5;
- X f = fopen ("f16", "r");
- X c->object = VReadObject(f);
- X fclose (f);
- X
- X c->TEWSThreshold = 0.0; /* zero, for now */
- X c->radarOutput = 15000.0; /* estimated */
- X c->radarDRange = 80.0 * NM;
- X c->radarTRange = 60.0 * NM;
- X
- X c->placeProc = NULL;
- X
- X}
- X
- Xvoid initmig23 () {
- X
- X int i;
- X FILE *f;
- X craftType *c;
- X
- X c = newCraft();
- X c->name = strdup("mig-23");
- X c->CLOrigin = 0.129871;
- X c->CLSlope = 3.24778;
- X c->CLNegStall = -17.0 * pi / 180.0;
- X c->CLPosStall = 26.0 * pi / 180.0;
- X
- X c->aspectRatio = 2.27;
- X
- X c->CDOrigin = 0.03642;
- X c->CDFactor = -2.54200;
- X c->CDPhase = 0.0349066;
- X
- X c->CDBOrigin = 1.0;
- X c->CDBFactor = -1.0;
- X c->CDBPhase = 0.0;
- X
- X c->CMOrigin = 0.0;
- X c->CMFactor = -0.95;
- X
- X c->CNOrigin = 0.0;
- X c->CNFactor = -0.90;
- X
- X c->effElevator = 0.50;
- X c->effAileron = 0.70;
- X c->effRudder = 0.30;
- X
- X c->maxFlap = 40.0 * pi / 180.0; /* 40 degree maximum flap setting */
- X c->cFlap = 0.64279; /* yields Clift of 1.0 at max extension */
- X c->flapRate = 0.1745; /* about 4 seconds to fully extend flaps */
- X
- X c->maxSpeedBrake = DEGtoRAD (80.0);
- X c->cSpeedBrake = 0.02; /* drag coefficient added by speed brakes */
- X c->speedBrakeRate = DEGtoRAD (40.0); /* about 0.25 seconds to fully extend */
- X c->speedBrakeIncr = DEGtoRAD (80.0); /* one keystoke means full extension */
- X
- X VIdentMatrix(&(c->I));
- X c->I.m[0][0] = 60000.0;
- X c->I.m[1][1] = 180000.0;
- X c->I.m[2][2] = 195000.0;
- X c->LDamp = 700000.0;
- X c->MDamp = 1000000.0;
- X c->NDamp = 1000000.0;
- X c->cmSlope = -1.88;
- X c->cmFactor = -1.00;
- X c->cnSlope = 1.00;
- X c->cnFactor = 0.50;
- X c->betaStall = 15.0 * pi / 180.0;
- X
- X c->wingS = 325.0;
- X c->emptyWeight = 25000.0;
- X c->maxFuel = 9914.0;
- X/*
- X * Engine data for Tumansky R-29B
- X * source "Modern Fighter Combat"
- X */
- X
- X c->maxThrust = 17635.0;
- X c->maxABThrust = 25350.0;
- X c->spFuelConsump = 0.68;
- X c->spABFuelConsump = 2.55;
- X
- X c->groundingPoint.x = 0.0;
- X c->groundingPoint.y = 0.0;
- X c->groundingPoint.z = 6.0;
- X c->viewPoint.x = 12.5;
- X c->viewPoint.y = 0.0;
- X c->viewPoint.z = -3.0;
- X c->crashC = 90.0;
- X
- X c->sCount = 3;
- X c->wStation[0].x = 7.0;
- X c->wStation[0].y = -4.0;
- X c->wStation[0].z = 0.0;
- X c->wStation[1].x = 0.357;
- X c->wStation[1].y = 15.6;
- X c->wStation[1].z = 0.0;
- X c->wStation[2].x = 0.357;
- X c->wStation[2].y = -15.6;
- X c->wStation[2].z = 0.0;
- X
- X c->muStatic = 0.08;
- X c->muKinetic = 0.05;
- X c->muBStatic = 0.7;
- X c->muBKinetic = 0.6;
- X
- X c->maxNWDef = 1.27; /* 72.7 degrees */
- X c->NWIncr = 1.27 / 32.0;
- X c->maxNWS = 100.0 * 6076.0 / 3600.0;
- X c->gearD1 = 13.5;
- X c->gearD2 = -2.5;
- X f = fopen ("mig23", "r");
- X c->object = VReadObject(f);
- X fclose (f);
- X
- X c->TEWSThreshold = 0.0; /* zero, for now */
- X c->radarOutput = 15000.0; /* estimated */
- X c->radarDRange = 80.0 * NM;
- X c->radarTRange = 30.0 * NM;
- X
- X c->placeProc = NULL;
- X
- X}
- X
- Xint newPlane(planeType)
- Xchar *planeType; {
- X
- X int i, j;
- X craft *c;
- X
- X for (i=0; i<MAXPLAYERS; ++i) {
- X if (ptbl[i].type == CT_FREE) {
- X
- X c = &ptbl[i];
- X c->type = CT_PLANE;
- X c->cinfo = lookupCraft (planeType);
- X c->fuel = c->cinfo->maxFuel;
- X
- X c->Cg.x = 0.0;
- X c->Cg.y = 0.0;
- X c->Cg.z = 0.0;
- X c->Sg.x = 40.0;
- X c->Sg.y = 0.0;
- X c->Sg.z = - c->cinfo->groundingPoint.z;
- X c->prevSg = c->Sg;
- X
- X c->p = c->q = c->r = 0.0;
- X c->Se = c->Sr = c->Sa = 0.0;
- X
- X c->throttle = 1024;
- X c->curThrust = calcThrust (c);
- X c->curFlap = 0.0;
- X c->flapSetting = 0.0;
- X c->curSpeedBrake = 0.0;
- X c->speedBrakeSetting = 0.0;
- X c->curHeading = c->curPitch = c->curRoll = 0.0;
- X VIdentMatrix(&(c->trihedral));
- X c->Itrihedral = c->trihedral;
- X c->groundContact = 1;
- X c->curNWDef = 0.0;
- X c->flags = FL_NWS;
- X c->radarMode = RM_NORMAL;
- X c->curRadarTarget = -1;
- X c->viewDirection.x = 1.0;
- X c->viewDirection.y = 0.0;
- X c->viewDirection.z = 0.0;
- X c->viewUp.x = 0.0;
- X c->viewUp.y = 0.0;
- X c->viewUp.z = -1.0;
- X for (j=0; j<3; ++j) {
- X c->leftHUD[j] = malloc (32);
- X c->rightHUD[j] = malloc (32);
- X }
- X
- X c->curWeapon = WEAPONTYPES - 1;
- X selectWeapon (c);
- X
- X/* a trick to select a valid weapon */
- X
- X/*
- X * give the player 8 Sidewinders and a cannon.
- X */
- X
- X c->station[0].type = WK_M61A1;
- X c->station[0].info = 500;
- X c->station[0].info2 = 0;
- X c->station[0].info3 = 0;
- X c->station[1].type = WK_AIM9M;
- X c->station[2].type = WK_AIM9M;
- X c->station[3].type = WK_AIM9M;
- X c->station[4].type = WK_AIM9M;
- X c->station[5].type = WK_AIM9M;
- X c->station[6].type = WK_AIM9M;
- X c->station[7].type = WK_AIM9M;
- X c->station[8].type = WK_AIM9M;
- X break;
- X }
- X }
- X
- X if (i == MAXPLAYERS)
- X return -1;
- X
- X return i;
- X}
- X
- Xint newDrone(p)
- Xcraft *p; {
- X
- X
- X int i, j;
- X craft *c;
- X VPoint s;
- X
- X for (i=0; i<MAXPLAYERS; ++i) {
- X if (ptbl[i].type == CT_FREE) {
- X
- X c = &ptbl[i];
- X *c = *p;
- X
- X c->index = i;
- X c->team = i;
- X
- X c->vl = NULL;
- X c->type = CT_DRONE;
- X c->cinfo = lookupCraft ("f-16c");
- X
- X/*
- X * Position the drone 200 feet ahead of the player's craft.
- X */
- X
- X s.x = 400.0;
- X s.y = 30.0;
- X s.z = 0.0;
- X VTransform (&s, &(p->trihedral), &(c->Sg));
- X c->Sg.x += p->Sg.x;
- X c->Sg.y += p->Sg.y;
- X c->Sg.z += p->Sg.z;
- X c->prevSg = c->Sg;
- X
- X/* c->p = c->q = c->r = 0.0;
- X c->Se = c->Sr = c->Sa = 0.0;
- X
- X c->throttle = 1024;
- X c->curThrust = calcThrust (c);
- X c->curHeading = c->curPitch = c->curRoll = 0.0;
- X VIdentMatrix(&(c->trihedral));
- X c->Itrihedral = c->trihedral;
- X*/
- X c->groundContact = 0;
- X c->curNWDef = 0.0;
- X c->flags = 0;
- X c->radarMode = RM_NORMAL;
- X
- X for (j=0; j<3; ++j)
- X c->leftHUD[j] = c->rightHUD[j] = NULL;
- X
- X break;
- X }
- X }
- X
- X if (i == MAXPLAYERS)
- X return -1;
- X
- X return i;
- X}
- *-*-END-of-./fsim/newPlane.c-*-*
- echo x - ./fsim/doEvents.c
- sed 's/^X//' >./fsim/doEvents.c <<'*-*-END-of-./fsim/doEvents.c-*-*'
- X/*
- X * xflight : an aerial combat simulator for X
- X *
- X * Written by Riley Rainey, riley@mips.com
- X *
- X * Permission to use, copy, modify and distribute (without charge) this
- X * software, documentation, images, etc. is granted, provided that this
- X * comment and the author's name is retained.
- X *
- X */
- X
- X#include "pm.h"
- X#include <X11/Xutil.h>
- X#include <X11/keysym.h>
- X
- X#define MAX_MAPPED_STRING_LEN 10
- X#define MAX_POPUP_STRING_LEN 40
- X
- Xextern int cur;
- X
- Xvoid doEvents(c)
- Xcraft *c;
- X{
- X
- X XEvent ev;
- X viewer *u;
- X int player;
- X double scale;
- X
- X/*
- X * Process events for each player and any "back seaters"
- X */
- X
- X player = 1;
- X for (u=c->vl; u != (viewer *) NULL; u=u->next) {
- X
- X
- X#define mask KeyPressMask | ButtonPressMask | ButtonReleaseMask | \
- X StructureNotifyMask
- X
- X if (cur % REDRAW_EVERY == 0)
- X getStick (c, u);
- X
- X while (XCheckWindowEvent (u->dpy, u->win, mask, &ev) == True) {
- X
- X switch (ev.type) {
- X
- X case KeyPress:
- X if (doKeyEvent (c, u, &ev, player) < 0)
- X return;
- X break;
- X
- X case ButtonPress:
- X if (doButtonEvent (c, u, &ev, player) < 0)
- X return;
- X break;
- X
- X case ButtonRelease:
- X if (doButtonReleaseEvent (c, u, &ev, player) < 0)
- X return;
- X break;
- X
- X case ConfigureNotify:
- X scale = (double) ev.xconfigure.height /
- X (double) FS_WINDOW_HEIGHT;
- X u->width = ev.xconfigure.width;
- X u->height = ev.xconfigure.height;
- X u->height = u->height * VIEW_WINDOW_HEIGHT /
- X FS_WINDOW_HEIGHT;
- X u->xCenter = u->width / 2;
- X u->yCenter = u->height / 2;
- X VResizeViewport (u->v, 12.0*25.4/1000.0,
- X 0.40, scale, u->width, u->height);
- X break;
- X
- X default:
- X break;
- X }
- X
- X }
- X
- X player = 0;
- X
- X }
- X}
- X
- Xint doButtonEvent (c, u, ev, player)
- Xcraft *c;
- Xviewer *u;
- XXEvent *ev;
- Xint player; {
- X
- X if (ev->xbutton.button == Button2)
- X fireWeapon (c);
- X
- X else if (ev->xbutton.button == Button3)
- X selectWeapon (c);
- X
- X return 0;
- X}
- X
- Xint doButtonReleaseEvent (c, u, ev, player)
- Xcraft *c;
- Xviewer *u;
- XXEvent *ev;
- Xint player; {
- X
- X if (ev->xbutton.button == Button2)
- X ceaseFireWeapon (c);
- X
- X return 0;
- X}
- X
- Xint doKeyEvent (c, u, ev, player)
- Xcraft *c;
- Xviewer *u;
- XXEvent *ev;
- Xint player;
- X{
- X
- X KeySym keysym;
- X XComposeStatus compose;
- X char buffer[MAX_MAPPED_STRING_LEN];
- X int buflen = MAX_MAPPED_STRING_LEN;
- X int count;
- X
- X count = XLookupString (ev, buffer, buflen, &keysym, &compose);
- X
- X if (player) {
- X
- X switch (keysym) {
- X
- X case XK_Left:
- X if (c->flags & FL_NWS) {
- X c->curNWDef = c->curNWDef - c->cinfo->NWIncr;
- X if (c->curNWDef < - c->cinfo->maxNWDef)
- X c->curNWDef = - c->cinfo->maxNWDef;
- X }
- X else {
- X c->Sa = c->Sa - 0.05;
- X }
- X break;
- X
- X case XK_Right:
- X if (c->flags & FL_NWS) {
- X c->curNWDef = c->curNWDef + c->cinfo->NWIncr;
- X if (c->curNWDef > c->cinfo->maxNWDef)
- X c->curNWDef = c->cinfo->maxNWDef;
- X }
- X else {
- X c->Sa = c->Sa + 0.05;
- X }
- X break;
- X
- X case XK_Up:
- X c->Se = c->Se - 0.01;
- X break;
- X
- X case XK_Down:
- X c->Se = c->Se + 0.01;
- X break;
- X
- X case XK_Home:
- X c->Se = 0.0;
- X c->Sr = 0.0;
- X c->Sa = 0.0;
- X break;
- X
- X case XK_y:
- X case XK_Y:
- X flapsUp (c);
- X break;
- X
- X case XK_h:
- X case XK_H:
- X flapsDown (c);
- X break;
- X
- X case XK_w:
- X case XK_W:
- X speedBrakeRetract (c);
- X break;
- X
- X case XK_s:
- X case XK_S:
- X speedBrakeExtend (c);
- X break;
- X
- X case XK_2:
- X case XK_KP_Subtract:
- X c->throttle = (c->throttle <= 1000) ? 1000 :
- X c->throttle - 512;
- X c->curThrust = calcThrust(c);
- X break;
- X
- X case XK_3:
- X case XK_KP_Add:
- X c->throttle = (c->throttle >= 32768) ? 32768 :
- X c->throttle + 512;
- X c->curThrust = calcThrust(c);
- X break;
- X
- X case XK_4:
- X case XK_Prior:
- X c->throttle = 32768;
- X c->curThrust = calcThrust(c);
- X break;
- X
- X case XK_1:
- X case XK_Next:
- X c->throttle = 3276;
- X c->curThrust = calcThrust(c);
- X break;
- X
- X case XK_A:
- X case XK_a:
- X c->flags ^= FL_AFTERBURNER;
- X c->curThrust = calcThrust(c);
- X break;
- X
- X case XK_B:
- X case XK_b:
- X c->flags ^= FL_BRAKES;
- X break;
- X
- X case XK_L:
- X case XK_l:
- X newDrone (c);
- X break;
- X
- X case XK_KP_8:
- X c->viewDirection.x = 1.0;
- X c->viewDirection.y = 0.0;
- X c->viewDirection.z = 0.0;
- X c->viewUp.x = 0.0;
- X c->viewUp.y = 0.0;
- X c->viewUp.z = -1.0;
- X break;
- X
- X/* look right */
- X
- X case XK_KP_6:
- X c->viewDirection.x = 0.0;
- X c->viewDirection.y = 1.0;
- X c->viewDirection.z = 0.0;
- X c->viewUp.x = 0.0;
- X c->viewUp.y = 0.0;
- X c->viewUp.z = -1.0;
- X break;
- X
- X/* look left */
- X
- X case XK_KP_4:
- X c->viewDirection.x = 0.0;
- X c->viewDirection.y = -1.0;
- X c->viewDirection.z = 0.0;
- X c->viewUp.x = 0.0;
- X c->viewUp.y = 0.0;
- X c->viewUp.z = -1.0;
- X break;
- X
- X/* look back */
- X
- X case XK_KP_2:
- X c->viewDirection.x = -1.0;
- X c->viewDirection.y = 0.0;
- X c->viewDirection.z = 0.0;
- X c->viewUp.x = 0.0;
- X c->viewUp.y = 0.0;
- X c->viewUp.z = -1.0;
- X break;
- X
- X/* look up */
- X
- X case XK_KP_5:
- X c->viewDirection.x = 0.0;
- X c->viewDirection.y = 0.0;
- X c->viewDirection.z = -1.0;
- X c->viewUp.x = -1.0;
- X c->viewUp.y = 0.0;
- X c->viewUp.z = 0.0;
- X break;
- X
- X case XK_Q:
- X case XK_q:
- X c->curRadarTarget = getRadarTarget (c, 1);
- X break;
- X
- X case XK_R:
- X case XK_r:
- X c->radarMode = (c->radarMode == RM_STANDBY) ?
- X RM_NORMAL : RM_STANDBY;
- X break;
- X
- X case XK_P:
- X case XK_p:
- X killPlayer (c);
- X return -1;
- X }
- X
- X }
- X
- X return 0;
- X}
- *-*-END-of-./fsim/doEvents.c-*-*
- echo x - ./fsim/doScale.c
- sed 's/^X//' >./fsim/doScale.c <<'*-*-END-of-./fsim/doScale.c-*-*'
- X#include <X11/Xlib.h>
- X#include "scale.h"
- X
- Xstatic char *skipBlanks (s)
- Xchar *s; {
- X
- X for (; *s == ' '; s++) ;
- X return s;
- X}
- X
- Xvoid doScale (dpy, win, gc, s, value, fth, ftw)
- XDisplay *dpy;
- XWindow win;
- XGC gc;
- XscaleControl *s;
- Xdouble value;
- Xint fth;
- Xint ftw; {
- X
- X XPoint p;
- X XSegment seg[32];
- X int is = 0;
- X double vStart;
- X int top = s->yorg - s->length;
- X int y, w, v, n;
- X int ytick = (double) s->minorInterval / s->scale + 0.5;
- X int doMajor;
- X char str[16], *q;
- X
- X vStart = value - (double) (s->length / 2) * s->scale;
- X n = (int) vStart % s->minorInterval;
- X if (n > 0)
- X n = n - s->minorInterval;
- X y = s->yorg + (int) (n / s->scale);
- X if (vStart > 0.0)
- X v = (int) (vStart + s->minorInterval - 1.0);
- X else
- X v = (int) vStart;
- X v = v / s->minorInterval * s->minorInterval;
- X
- X/*
- X * Draw the index mark
- X */
- X
- X seg[is].y1 = seg[is].y2 = s->yorg - ((double) s->length / 2.0);
- X if (s->orientation & orientRight) {
- X seg[is].x1 = s->xorg - 2;
- X seg[is].x2 = seg[is].x1 - s->indexSize;
- X }
- X else {
- X seg[is].x1 = s->xorg + 2;
- X seg[is].x2 = seg[is].x1 + s->indexSize;
- X }
- X ++ is;
- X
- X/*
- X * step through the doMajor and minor ticks
- X */
- X
- X for (; y > top; (y -= ytick, v += s->minorInterval)) {
- X
- X/* we don't mark negative ticks */
- X
- X if (v < 0)
- X continue;
- X
- X seg[is].x1 = s->xorg;
- X seg[is].y1 = seg[is].y2 = p.y = y;
- X
- X if ((v % s->majorInterval) == 0) {
- X doMajor = 1;
- X w = s->majorSize;
- X if (s->orientation & orientRight)
- X seg[is].x2 = s->xorg + w;
- X else
- X seg[is].x2 = s->xorg - w;
- X sprintf (str, s->format, (double) v / s->divisor);
- X q = skipBlanks (str);
- X p.y += 0.30 * (double) fth;
- X if (s->orientation & orientRight) {
- X p.x = seg[is].x2 + 3;
- X }
- X else {
- X p.x = seg[is].x2 - 3 - ftw * strlen(q);
- X }
- X }
- X else {
- X doMajor = 0;
- X w = s->minorSize;
- X if (s->orientation & orientRight)
- X seg[is].x2 = s->xorg + w;
- X else
- X seg[is].x2 = s->xorg - w;
- X }
- X
- X if (doMajor)
- X XDrawString (dpy, win, gc, p.x, p.y, q,
- X strlen (q));
- X ++ is;
- X }
- X
- X XDrawSegments (dpy, win, gc, seg, is);
- X
- X}
- X
- Xvoid doCompassScale (dpy, win, gc, s, value, fth, ftw)
- XDisplay *dpy;
- XWindow win;
- XGC gc;
- XscaleControl *s;
- Xdouble value;
- Xint fth;
- Xint ftw; {
- X
- X XPoint p;
- X XSegment seg[32];
- X int is = 0;
- X double vStart;
- X int top = s->xorg + s->length;
- X int x, w, v, n;
- X int xtick = (double) s->minorInterval / s->scale + 0.5;
- X int doMajor;
- X char str[16], *q;
- X
- X vStart = value - (double) (s->length / 2) * s->scale;
- X if (vStart <= 0.0)
- X vStart += 36000.0;
- X n = (int) vStart % s->minorInterval;
- X if (n > 0)
- X n = n - s->minorInterval;
- X x = s->xorg - (int) (n / s->scale);
- X if (vStart > 0.0)
- X v = (int) (vStart + s->minorInterval - 1.0);
- X else
- X v = (int) vStart;
- X v = v / s->minorInterval * s->minorInterval;
- X
- X/*
- X * Draw the index mark
- X */
- X
- X seg[is].x1 = seg[is].x2 = s->xorg + (int) ((double) s->length / 2.0 + 0.5);
- X if (s->orientation & orientRight) {
- X seg[is].y1 = s->yorg - 2;
- X seg[is].y2 = seg[is].y1 - s->indexSize;
- X }
- X else {
- X seg[is].y1 = s->yorg + 2;
- X seg[is].y2 = seg[is].y1 + s->indexSize;
- X }
- X ++ is;
- X
- X/*
- X * step through the doMajor and minor ticks
- X */
- X
- X for (; x < top; (x += xtick, v += s->minorInterval)) {
- X
- X if (v > 36000)
- X v -= 36000;
- X
- X seg[is].y1 = s->yorg;
- X seg[is].x1 = seg[is].x2 = p.x = x;
- X
- X if ((v % s->majorInterval) == 0) {
- X doMajor = 1;
- X w = s->majorSize;
- X if (s->orientation & orientRight)
- X seg[is].y2 = s->yorg + w;
- X else
- X seg[is].y2 = s->yorg - w;
- X sprintf (str, s->format, (double) v / s->divisor);
- X q = skipBlanks (str);
- X p.x -= (strlen(q) * ftw) / 2;
- X if (s->orientation & orientRight) {
- X p.y = seg[is].y2 + 3 + fth;
- X }
- X else {
- X p.y = seg[is].y2 - 3;
- X }
- X }
- X else {
- X doMajor = 0;
- X w = s->minorSize;
- X if (s->orientation & orientRight)
- X seg[is].y2 = s->yorg + w;
- X else
- X seg[is].y2 = s->yorg - w;
- X }
- X
- X if (doMajor)
- X XDrawString (dpy, win, gc, p.x, p.y, q,
- X strlen (q));
- X ++ is;
- X }
- X
- X XDrawSegments (dpy, win, gc, seg, is);
- X
- X}
- *-*-END-of-./fsim/doScale.c-*-*
- echo x - ./fsim/rwy
- sed 's/^X//' >./fsim/rwy <<'*-*-END-of-./fsim/rwy-*-*'
- X*runway-with-lines
- X216 54
- X1 0.000000 -75.000000 0.000000
- X2 12000.000000 -75.000000 0.000000
- X3 12000.000000 75.000000 0.000000
- X4 0.000000 75.000000 0.000000
- X5 0.000000 -75.000000 0.000000
- X6 12000.000000 -75.000000 0.000000
- X7 12000.000000 -72.000000 0.000000
- X8 0.000000 -72.000000 0.000000
- X9 0.000000 75.000000 0.000000
- X10 12000.000000 75.000000 0.000000
- X11 12000.000000 72.000000 0.000000
- X12 0.000000 72.000000 0.000000
- X13 1000.000000 -68.000000 0.000000
- X14 1125.000000 -68.000000 0.000000
- X15 1125.000000 -45.500000 0.000000
- X16 1000.000000 -45.500000 0.000000
- X17 1000.000000 68.000000 0.000000
- X18 1125.000000 68.000000 0.000000
- X19 1125.000000 45.500000 0.000000
- X20 1000.000000 45.500000 0.000000
- X21 11000.000000 -68.000000 0.000000
- X22 10875.000000 -68.000000 0.000000
- X23 10875.000000 -45.500000 0.000000
- X24 11000.000000 -45.500000 0.000000
- X25 11000.000000 68.000000 0.000000
- X26 10875.000000 68.000000 0.000000
- X27 10875.000000 45.500000 0.000000
- X28 11000.000000 45.500000 0.000000
- X29 4.000000 -68.000000 0.000000
- X30 129.000000 -68.000000 0.000000
- X31 129.000000 -56.444443 0.000000
- X32 4.000000 -56.444443 0.000000
- X33 4.000000 -52.444443 0.000000
- X34 129.000000 -52.444443 0.000000
- X35 129.000000 -40.888889 0.000000
- X36 4.000000 -40.888889 0.000000
- X37 4.000000 -36.888889 0.000000
- X38 129.000000 -36.888889 0.000000
- X39 129.000000 -25.333334 0.000000
- X40 4.000000 -25.333334 0.000000
- X41 4.000000 -21.333334 0.000000
- X42 129.000000 -21.333334 0.000000
- X43 129.000000 -9.777778 0.000000
- X44 4.000000 -9.777778 0.000000
- X45 4.000000 9.777778 0.000000
- X46 129.000000 9.777778 0.000000
- X47 129.000000 21.333334 0.000000
- X48 4.000000 21.333334 0.000000
- X49 4.000000 25.333334 0.000000
- X50 129.000000 25.333334 0.000000
- X51 129.000000 36.888889 0.000000
- X52 4.000000 36.888889 0.000000
- X53 4.000000 40.888889 0.000000
- X54 129.000000 40.888889 0.000000
- X55 129.000000 52.444443 0.000000
- X56 4.000000 52.444443 0.000000
- X57 4.000000 56.444443 0.000000
- X58 129.000000 56.444443 0.000000
- X59 129.000000 68.000000 0.000000
- X60 4.000000 68.000000 0.000000
- X61 11996.000000 -68.000000 0.000000
- X62 11871.000000 -68.000000 0.000000
- X63 11871.000000 -56.444443 0.000000
- X64 11996.000000 -56.444443 0.000000
- X65 11996.000000 -52.444443 0.000000
- X66 11871.000000 -52.444443 0.000000
- X67 11871.000000 -40.888889 0.000000
- X68 11996.000000 -40.888889 0.000000
- X69 11996.000000 -36.888889 0.000000
- X70 11871.000000 -36.888889 0.000000
- X71 11871.000000 -25.333334 0.000000
- X72 11996.000000 -25.333334 0.000000
- X73 11996.000000 -21.333334 0.000000
- X74 11871.000000 -21.333334 0.000000
- X75 11871.000000 -9.777778 0.000000
- X76 11996.000000 -9.777778 0.000000
- X77 11996.000000 9.777778 0.000000
- X78 11871.000000 9.777778 0.000000
- X79 11871.000000 21.333334 0.000000
- X80 11996.000000 21.333334 0.000000
- X81 11996.000000 25.333334 0.000000
- X82 11871.000000 25.333334 0.000000
- X83 11871.000000 36.888889 0.000000
- X84 11996.000000 36.888889 0.000000
- X85 11996.000000 40.888889 0.000000
- X86 11871.000000 40.888889 0.000000
- X87 11871.000000 52.444443 0.000000
- X88 11996.000000 52.444443 0.000000
- X89 11996.000000 56.444443 0.000000
- X90 11871.000000 56.444443 0.000000
- X91 11871.000000 68.000000 0.000000
- X92 11996.000000 68.000000 0.000000
- X93 258.000000 -2.000000 0.000000
- X94 383.000000 -2.000000 0.000000
- X95 383.000000 2.000000 0.000000
- X96 258.000000 2.000000 0.000000
- X97 633.000000 -2.000000 0.000000
- X98 758.000000 -2.000000 0.000000
- X99 758.000000 2.000000 0.000000
- X100 633.000000 2.000000 0.000000
- X101 1008.000000 -2.000000 0.000000
- X102 1133.000000 -2.000000 0.000000
- X103 1133.000000 2.000000 0.000000
- X104 1008.000000 2.000000 0.000000
- X105 1383.000000 -2.000000 0.000000
- X106 1508.000000 -2.000000 0.000000
- X107 1508.000000 2.000000 0.000000
- X108 1383.000000 2.000000 0.000000
- X109 1758.000000 -2.000000 0.000000
- X110 1883.000000 -2.000000 0.000000
- X111 1883.000000 2.000000 0.000000
- X112 1758.000000 2.000000 0.000000
- X113 2133.000000 -2.000000 0.000000
- X114 2258.000000 -2.000000 0.000000
- X115 2258.000000 2.000000 0.000000
- X116 2133.000000 2.000000 0.000000
- X117 2508.000000 -2.000000 0.000000
- X118 2633.000000 -2.000000 0.000000
- X119 2633.000000 2.000000 0.000000
- X120 2508.000000 2.000000 0.000000
- X121 2883.000000 -2.000000 0.000000
- X122 3008.000000 -2.000000 0.000000
- X123 3008.000000 2.000000 0.000000
- X124 2883.000000 2.000000 0.000000
- X125 3258.000000 -2.000000 0.000000
- X126 3383.000000 -2.000000 0.000000
- X127 3383.000000 2.000000 0.000000
- X128 3258.000000 2.000000 0.000000
- X129 3633.000000 -2.000000 0.000000
- X130 3758.000000 -2.000000 0.000000
- X131 3758.000000 2.000000 0.000000
- X132 3633.000000 2.000000 0.000000
- X133 4008.000000 -2.000000 0.000000
- X134 4133.000000 -2.000000 0.000000
- X135 4133.000000 2.000000 0.000000
- X136 4008.000000 2.000000 0.000000
- X137 4383.000000 -2.000000 0.000000
- X138 4508.000000 -2.000000 0.000000
- X139 4508.000000 2.000000 0.000000
- X140 4383.000000 2.000000 0.000000
- X141 4758.000000 -2.000000 0.000000
- X142 4883.000000 -2.000000 0.000000
- X143 4883.000000 2.000000 0.000000
- X144 4758.000000 2.000000 0.000000
- X145 5133.000000 -2.000000 0.000000
- X146 5258.000000 -2.000000 0.000000
- X147 5258.000000 2.000000 0.000000
- X148 5133.000000 2.000000 0.000000
- X149 5508.000000 -2.000000 0.000000
- X150 5633.000000 -2.000000 0.000000
- X151 5633.000000 2.000000 0.000000
- X152 5508.000000 2.000000 0.000000
- X153 5883.000000 -2.000000 0.000000
- X154 6008.000000 -2.000000 0.000000
- X155 6008.000000 2.000000 0.000000
- X156 5883.000000 2.000000 0.000000
- X157 6258.000000 -2.000000 0.000000
- X158 6383.000000 -2.000000 0.000000
- X159 6383.000000 2.000000 0.000000
- X160 6258.000000 2.000000 0.000000
- X161 6633.000000 -2.000000 0.000000
- X162 6758.000000 -2.000000 0.000000
- X163 6758.000000 2.000000 0.000000
- X164 6633.000000 2.000000 0.000000
- X165 7008.000000 -2.000000 0.000000
- X166 7133.000000 -2.000000 0.000000
- X167 7133.000000 2.000000 0.000000
- X168 7008.000000 2.000000 0.000000
- X169 7383.000000 -2.000000 0.000000
- X170 7508.000000 -2.000000 0.000000
- X171 7508.000000 2.000000 0.000000
- X172 7383.000000 2.000000 0.000000
- X173 7758.000000 -2.000000 0.000000
- X174 7883.000000 -2.000000 0.000000
- X175 7883.000000 2.000000 0.000000
- X176 7758.000000 2.000000 0.000000
- X177 8133.000000 -2.000000 0.000000
- X178 8258.000000 -2.000000 0.000000
- X179 8258.000000 2.000000 0.000000
- X180 8133.000000 2.000000 0.000000
- X181 8508.000000 -2.000000 0.000000
- X182 8633.000000 -2.000000 0.000000
- X183 8633.000000 2.000000 0.000000
- X184 8508.000000 2.000000 0.000000
- X185 8883.000000 -2.000000 0.000000
- X186 9008.000000 -2.000000 0.000000
- X187 9008.000000 2.000000 0.000000
- X188 8883.000000 2.000000 0.000000
- X189 9258.000000 -2.000000 0.000000
- X190 9383.000000 -2.000000 0.000000
- X191 9383.000000 2.000000 0.000000
- X192 9258.000000 2.000000 0.000000
- X193 9633.000000 -2.000000 0.000000
- X194 9758.000000 -2.000000 0.000000
- X195 9758.000000 2.000000 0.000000
- X196 9633.000000 2.000000 0.000000
- X197 10008.000000 -2.000000 0.000000
- X198 10133.000000 -2.000000 0.000000
- X199 10133.000000 2.000000 0.000000
- X200 10008.000000 2.000000 0.000000
- X201 10383.000000 -2.000000 0.000000
- X202 10508.000000 -2.000000 0.000000
- X203 10508.000000 2.000000 0.000000
- X204 10383.000000 2.000000 0.000000
- X205 10758.000000 -2.000000 0.000000
- X206 10883.000000 -2.000000 0.000000
- X207 10883.000000 2.000000 0.000000
- X208 10758.000000 2.000000 0.000000
- X209 11133.000000 -2.000000 0.000000
- X210 11258.000000 -2.000000 0.000000
- X211 11258.000000 2.000000 0.000000
- X212 11133.000000 2.000000 0.000000
- X213 11508.000000 -2.000000 0.000000
- X214 11633.000000 -2.000000 0.000000
- X215 11633.000000 2.000000 0.000000
- X216 11508.000000 2.000000 0.000000
- X#b7b19f 4 1 2 3 4
- Xwhite 4 5 6 7 8
- Xwhite 4 9 10 11 12
- Xwhite 4 13 14 15 16
- Xwhite 4 17 18 19 20
- Xwhite 4 21 22 23 24
- Xwhite 4 25 26 27 28
- Xwhite 4 29 30 31 32
- Xwhite 4 33 34 35 36
- Xwhite 4 37 38 39 40
- Xwhite 4 41 42 43 44
- Xwhite 4 45 46 47 48
- Xwhite 4 49 50 51 52
- Xwhite 4 53 54 55 56
- Xwhite 4 57 58 59 60
- Xwhite 4 61 62 63 64
- Xwhite 4 65 66 67 68
- Xwhite 4 69 70 71 72
- Xwhite 4 73 74 75 76
- Xwhite 4 77 78 79 80
- Xwhite 4 81 82 83 84
- Xwhite 4 85 86 87 88
- Xwhite 4 89 90 91 92
- Xwhite 4 93 94 95 96
- Xwhite 4 97 98 99 100
- Xwhite 4 101 102 103 104
- Xwhite 4 105 106 107 108
- Xwhite 4 109 110 111 112
- Xwhite 4 113 114 115 116
- Xwhite 4 117 118 119 120
- Xwhite 4 121 122 123 124
- Xwhite 4 125 126 127 128
- Xwhite 4 129 130 131 132
- Xwhite 4 133 134 135 136
- Xwhite 4 137 138 139 140
- Xwhite 4 141 142 143 144
- Xwhite 4 145 146 147 148
- Xwhite 4 149 150 151 152
- Xwhite 4 153 154 155 156
- Xwhite 4 157 158 159 160
- Xwhite 4 161 162 163 164
- Xwhite 4 165 166 167 168
- Xwhite 4 169 170 171 172
- Xwhite 4 173 174 175 176
- Xwhite 4 177 178 179 180
- Xwhite 4 181 182 183 184
- Xwhite 4 185 186 187 188
- Xwhite 4 189 190 191 192
- Xwhite 4 193 194 195 196
- Xwhite 4 197 198 199 200
- Xwhite 4 201 202 203 204
- Xwhite 4 205 206 207 208
- Xwhite 4 209 210 211 212
- Xwhite 4 213 214 215 216
- *-*-END-of-./fsim/rwy-*-*
- echo x - ./fsim/mig23
- sed 's/^X//' >./fsim/mig23 <<'*-*-END-of-./fsim/mig23-*-*'
- Xmig-23-wings-swept
- X88 10
- X1 36.5891 0 0
- X2 34.4368 0.86092 0
- X3 30.9931 1.29138 0
- X4 27.119 1.72184 0
- X5 20.6621 1.72184 0
- X6 18.9402 2.1523 0
- X7 14.2052 3.01322 0
- X8 -3.44368 2.58276 0
- X9 -9.03966 2.1523 0
- X10 -16.7879 0.86092 0
- X11 -18.0793 0.43046 0
- X12 -18.0793 0 0
- X13 36.5891 0 0
- X14 34.4368 -0.86092 0
- X15 30.9931 -1.29138 0
- X16 27.119 -1.72184 0
- X17 20.6621 -1.72184 0
- X18 18.9402 -2.1523 0
- X19 14.2052 -3.01322 0
- X20 -3.44368 -2.58276 0
- X21 -9.03966 -2.1523 0
- X22 -16.7879 -0.86092 0
- X23 -18.0793 -0.43046 0
- X24 -18.0793 0 0
- X25 14.2052 3.01322 -3.01322
- X26 4.73506 7.31782 -3.01322
- X27 6.02644 8.6092 -3.01322
- X28 -11.192 13.7747 -3.01322
- X29 -12.0529 13.7747 -3.01322
- X30 -14.2052 11.192 -3.01322
- X31 -14.2052 10.7615 -3.01322
- X32 -3.44368 2.58276 -3.01322
- X33 14.2052 -3.01322 -3.01322
- X34 4.73506 -7.31782 -3.01322
- X35 6.02644 -8.6092 -3.01322
- X36 -11.192 -13.7747 -3.01322
- X37 -12.0529 -13.7747 -3.01322
- X38 -14.2052 -11.192 -3.01322
- X39 -14.2052 -10.7615 -3.01322
- X40 -3.44368 -2.58276 -3.01322
- X41 -18.9402 3.01322 -1.72184
- X42 -20.2316 7.31782 -1.72184
- X43 -18.5098 8.6092 -1.72184
- X44 -9.03966 2.1523 -1.72184
- X45 -16.7879 0.86092 -1.72184
- X46 -18.9402 -3.01322 -1.72184
- X47 -20.2316 -7.31782 -1.72184
- X48 -18.5098 -8.6092 -1.72184
- X49 -9.03966 -2.1523 -1.72184
- X50 -16.7879 -0.86092 -1.72184
- X51 36.5891 0 0
- X52 33.1454 0 -1.29138
- X53 30.1322 0 -2.1523
- X54 25.8276 0 -2.58276
- X55 22.3839 0 -3.87414
- X56 18.0793 0 -4.3046
- X57 9.47012 0 -3.87414
- X58 -0.860918 0 -3.44368
- X59 -8.6092 0 -6.02644
- X60 -16.3575 0 -10.331
- X61 -18.9402 0 -9.03966
- X62 -18.0793 0 -3.87414
- X63 -19.8012 0 -3.44368
- X64 -17.2184 0 -1.72184
- X65 -18.0793 0 -1.72184
- X66 -18.0793 0 1.29138
- X67 -15.4966 0 1.72184
- X68 -6.4569 0 2.1523
- X69 10.331 0 2.1523
- X70 20.2316 0 1.72184
- X71 28.8408 0 1.29138
- X72 33.1454 0 0.86092
- X73 -15.4966 0 1.72184
- X74 -15.4966 0 4.3046
- X75 -13.3443 0 5.16552
- X76 -6.4569 0 2.1523
- X77 20.6621 1.72184 -3.01322
- X78 18.9402 2.1523 -3.01322
- X79 14.2052 3.01322 -3.01322
- X80 -3.44368 2.58276 -3.01322
- X81 -3.44368 -2.58276 -3.01322
- X82 14.2052 -3.01322 -3.01322
- X83 18.9402 -2.1523 -3.01322
- X84 20.6621 -1.72184 -3.01322
- X85 -3.44368 2.58276 -3.01322
- X86 -16.7879 0.86092 -1.72184
- X87 -16.7879 -0.86092 -1.72184
- X88 -3.44368 -2.58276 -3.01322
- Xgray33 12 1 2 3 4 5 6 7 8 9 10 11 12
- Xgray33 12 13 14 15 16 17 18 19 20 21 22 23 24
- Xgray33 8 25 26 27 28 29 30 31 32
- Xgray33 8 33 34 35 36 37 38 39 40
- Xgray33 5 41 42 43 44 45
- Xgray33 5 46 47 48 49 50
- Xgray33 22 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
- Xgray33 4 73 74 75 76
- Xgray33 8 77 78 79 80 81 82 83 84
- Xgray33 4 85 86 87 88
- *-*-END-of-./fsim/mig23-*-*
- echo x - ./fsim/f16
- sed 's/^X//' >./fsim/f16 <<'*-*-END-of-./fsim/f16-*-*'
- XF-16-fighter
- X130 12
- X1 -18.165 0 0
- X2 -18.165 -1.191 0
- X3 -15.187 -2.085 0
- X4 -13.698 -2.382 0
- X5 -17.272 -2.382 0
- X6 -17.272 -3.573 0
- X7 -10.923 -3.573 0
- X8 -4.169 -3.573 0
- X9 -4.169 -4.765 0
- X10 5.598 -4.765 0
- X11 18.463 -2.144 0
- X12 18.939 -1.787 0
- X13 22.274 -1.489 0
- X14 24.895 -1.191 0
- X15 27.992 0 0
- X16 -6.551 -3.573 0
- X17 -6.551 -15.485 0
- X18 0.357 -15.485 0
- X19 0.357 -15.187 0
- X20 -2.978 -15.008 0
- X21 5.598 -4.765 0
- X22 -4.169 -4.765 0
- X23 -4.169 -3.573 0
- X24 -17.272 -3.573 0
- X25 -17.272 -8.934 0.893
- X26 -15.187 -8.934 0.893
- X27 -10.923 -3.573 0
- X28 27.992 0 0
- X29 24.895 1.191 0
- X30 22.274 1.489 0
- X31 18.939 1.787 0
- X32 18.463 2.144 0
- X33 5.598 4.765 0
- X34 -4.169 4.765 0
- X35 -4.169 3.573 0
- X36 -10.923 3.573 0
- X37 -17.272 3.573 0
- X38 -17.272 2.382 0
- X39 -13.698 2.382 0
- X40 -15.187 2.085 0
- X41 -18.165 1.191 0
- X42 -18.165 0 0
- X43 5.598 4.765 0
- X44 -2.978 15.008 0
- X45 0.357 15.187 0
- X46 0.357 15.485 0
- X47 -6.551 15.485 0
- X48 -6.551 3.573 0
- X49 -4.169 3.573 0
- X50 -4.169 4.765 0
- X51 -10.923 3.573 0
- X52 -15.187 8.934 0.893
- X53 -17.272 8.934 0.893
- X54 -17.272 3.573 0
- X55 27.992 0 0
- X56 23.525 0 -1.191
- X57 17.272 0 -2.382
- X58 15.783 0 -3.812
- X59 13.996 0 -4.169
- X60 11.316 0 -4.05
- X61 8.338 0 -3.335
- X62 1.787 0 -2.382
- X63 -4.169 0 -2.382
- X64 -13.936 0 -1.906
- X65 -15.128 0 -1.906
- X66 -15.187 0 -1.787
- X67 -18.165 0 -1.191
- X68 -18.165 0 0
- X69 -4.169 0 -2.382
- X70 -10.125 0 -4.05
- X71 -15.783 0 -10.482
- X72 -19.654 0 -10.482
- X73 -19.654 0 -9.529
- X74 -19.654 0 -9.529
- X75 -16.378 0 -3.573
- X76 -16.378 0 -2.144
- X77 -14.889 0 -2.382
- X78 -13.936 0 -2.382
- X79 -13.936 0 -1.906
- X80 -18.165 0 0
- X81 -18.165 0 1.191
- X82 -15.187 0 2.085
- X83 -13.698 0 2.263
- X84 -2.68 0 2.382
- X85 8.04 0 2.382
- X86 12.507 0 2.263
- X87 12.507 0 0.596
- X88 19.952 0 0.596
- X89 23.525 0 0.476
- X90 27.992 0 0
- X91 -3.551 0 -2.382
- X92 -3.551 -3.871 -0.10
- X93 -3.551 -15.485 0
- X94 -3.551 -15.485 0.1065
- X95 -3.551 -3.871 0.142
- X96 -3.551 -2.58 0.2556
- X97 -3.551 -2.387 1.818
- X98 -3.551 -2.102 2.015
- X99 -3.551 -1.03 2.251
- X100 -3.551 0 2.282
- X101 -3.551 1.03 2.251
- X102 -3.551 2.102 2.015
- X103 -3.551 2.387 1.818
- X104 -3.551 2.58 0.2556
- X105 -3.551 3.871 0.142
- X106 -3.551 15.485 0.1065
- X107 -3.551 15.485 0
- X108 -3.551 3.871 -0.10
- X109 13.996 0 -4.169
- X110 13.996 -0.8932 -3.692
- X111 13.996 -1.191 -2.978
- X112 13.996 -1.251 -2.502
- X113 13.996 -1.787 -1.311
- X114 13.996 -3.054 0
- X115 13.996 -1.583 0.3568
- X116 13.996 0 0.596
- X117 13.996 1.583 0.3568
- X118 13.996 3.054 0
- X119 13.996 1.787 -1.311
- X120 13.996 1.251 -2.502
- X121 13.996 1.191 -2.978
- X122 13.996 0.8932 -3.692
- X123 -18.165 1.191 0
- X124 -18.165 0.842 0.842
- X125 -18.165 0 1.191
- X126 -18.165 -0.842 0.842
- X127 -18.165 -1.191 0
- X128 -18.165 -0.842 -0.842
- X129 -18.165 0 -1.191
- X130 -18.165 0.842 -0.842
- Xgray33 14 109 110 111 112 113 114 115 116 117 118 119 120 121 122
- Xgray33 18 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
- Xgray33 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- Xgray33 8 16 17 18 19 20 21 22 23
- Xgray33 4 24 25 26 27
- Xgray33 15 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
- Xgray33 8 43 44 45 46 47 48 49 50
- Xgray33 4 51 52 53 54
- Xgray33 14 55 56 57 58 59 60 61 62 63 64 65 66 67 68
- Xgray33 11 69 70 71 72 73 74 75 76 77 78 79
- Xgray33 11 80 81 82 83 84 85 86 87 88 89 90
- Xgray33 8 123 124 125 126 127 128 129 130
- *-*-END-of-./fsim/f16-*-*
- echo x - ./fsim/transpose.c
- sed 's/^X//' >./fsim/transpose.c <<'*-*-END-of-./fsim/transpose.c-*-*'
- X/*
- X * xflight : an aerial combat simulator for X
- X *
- X * Written by Riley Rainey, riley@mips.com
- X *
- X * Permission to use, copy, modify and distribute (without charge) this
- X * software, documentation, images, etc. is granted, provided that this
- X * comment and the author's name is retained.
- X *
- X */
- X
- X#include <Vlib.h>
- X
- Xint transpose (m, r)
- XVMatrix *m, *r; {
- X
- X int i, j;
- X
- X for (i=0; i<4; ++i)
- X for (j=0; j<4; ++j)
- X r->m[i][j] = m->m[j][i];
- X return 0;
- X}
- *-*-END-of-./fsim/transpose.c-*-*
- echo x - ./fsim/mtn
- sed 's/^X//' >./fsim/mtn <<'*-*-END-of-./fsim/mtn-*-*'
- X*mountain
- X5 4
- X1 28000 0 0
- X2 0 16000 0
- X3 -35000 0 0
- X4 0 -14000 0
- X5 0 0 -8200
- X#788b63 3 1 2 5
- X#788b63 3 2 3 5
- X#788b63 3 3 4 5
- X#788b63 3 4 1 5
- *-*-END-of-./fsim/mtn-*-*
- echo x - ./fsim/acm.c
- sed 's/^X//' >./fsim/acm.c <<'*-*-END-of-./fsim/acm.c-*-*'
- X/*
- X * xflight : an aerial combat simulator for X
- X *
- X * Written by Riley Rainey, riley@mips.com
- X *
- X * Permission to use, copy, modify and distribute (without charge) this
- X * software, documentation, images, etc. is granted, provided that this
- X * comment and the author's name is retained.
- X *
- X */
- X
- X#include "manifest.h"
- X#include <sys/types.h>
- X#include <stdio.h>
- X#include <pwd.h>
- X#include <signal.h>
- X#include <sys/socket.h>
- X#include <netinet/in.h>
- X#include <netdb.h>
- X#include <setjmp.h>
- X
- Xextern char *getenv ();
- Xextern struct servent *getservent();
- X
- Xjmp_buf dead;
- X
- Xdone () {
- X longjmp (dead);
- X}
- X
- Xmain (argc, argv)
- Xint argc;
- Xchar *argv[]; {
- X
- X char *display;
- X char *username;
- X char *host;
- X char myhost[64];
- X char args[128];
- X int s, n = 1;
- X struct passwd *pwent, *getpwuid();
- X struct servent *sp;
- X struct sockaddr_in sin;
- X struct hostent *h = (struct hostent *) NULL;
- X
- X if ((host = getenv("ACMSERVER")) == NULL)
- X if (argc >= 2) {
- X host = argv[1];
- X n = 2;
- X }
- X else {
- X fprintf (stderr, "usage: %s server-hostname\n", argv[0]);
- X exit (1);
- X }
- X
- X if ((pwent = getpwuid(getuid())) == NULL) {
- X fprintf (stderr, "Yow!\n");
- X exit (1);
- X }
- X
- X if ((display = getenv("DISPLAY")) == NULL) {
- X fprintf (stderr, "Excuse me, but you have no DISPLAY.\n\
- XHow do you use X, anyway?\n");
- X exit (1);
- X }
- X
- X/*
- X * Sometimes we end up with a DISPLAY value that won't jive on the
- X * network (e.g. ":0.0") -- fix these cases.
- X */
- X
- X if (*display == ':') {
- X gethostname (myhost, sizeof(myhost));
- X strcat (myhost, display);
- X display = myhost;
- X }
- X
- X if ((sin.sin_addr.s_addr = inet_addr (host)) != -1) {
- X sin.sin_family = AF_INET;
- X }
- X else if ((h = gethostbyname (host)) != 0) {
- X sin.sin_family = h->h_addrtype;
- X bcopy (h->h_addr, &sin.sin_addr, h->h_length);
- X }
- X else {
- X fprintf (stderr, "Unknown host \"%s\"\n", host);
- X exit (1);
- X }
- X
- X sin.sin_port = htons(ACM_PORT);
- X
- X signal (SIGPIPE, done);
- X
- X if ((s = socket (AF_INET, SOCK_STREAM, 0)) < 0) {
- X perror ("can't get a socket");
- X exit (1);
- X }
- X
- X if (connect (s, (struct sockaddr *) &sin, sizeof (sin)) < 0) {
- X perror ("can't connect to server");
- X close (s);
- X exit (1);
- X }
- X
- X if (argv[n] != (char *) NULL)
- X strcpy (args, argv[n++]);
- X else
- X strcpy (args, "");
- X
- X for (; argv[n] != (char *) NULL; ++n) {
- X strcat (args, "|");
- X strcat (args, argv[n]);
- X }
- X
- X if (setjmp (dead) == 0)
- X handshake (s, display, pwent->pw_name, args);
- X
- X exit (0);
- X}
- X
- Xhandshake (s, dpy, name, args)
- Xint s;
- Xchar *dpy, *name, *args; {
- X
- X char info[128];
- X int n;
- X
- X sprintf (info, "%s %s %s\n", dpy, name, args);
- X write (s, info, strlen (info));
- X while ((n = read (s, info, sizeof (info))) > 0)
- X write (fileno (stdout), info, n);
- X
- X return 0;
- X}
- *-*-END-of-./fsim/acm.c-*-*
- echo x - ./fsim/doRadar.c
- sed 's/^X//' >./fsim/doRadar.c <<'*-*-END-of-./fsim/doRadar.c-*-*'
- X/*
- X * xflight : an aerial combat simulator for X
- X *
- X * Written by Riley Rainey, riley@mips.com
- X *
- X * Permission to use, copy, modify and distribute (without charge) this
- X * software, documentation, images, etc. is granted, provided that this
- X * comment and the author's name is retained.
- X *
- X */
- X
- X#include "pm.h"
- X#include <stdio.h>
- X#include <math.h>
- X
- X#define scanSlope 2.1445
- X
- Xvoid plotPrimaryTarget(), plotNormalTarget();
- X
- Xstatic char *thirty = "30";
- X
- X/*
- X * We'll build an array that contains the amount of radar radiation that each
- X * craft can "see" coming from another player. This is used to build each players
- X * radar threat display.
- X *
- X * rval[i][j] will represent the amount of radar energy that player j sees coming from
- X * player i.
- X *
- X * For neatness, the rval array has been moved to the ptbl vector.
- X */
- X
- Xchar *ItoA (n, s)
- Xint n;
- Xchar *s; {
- X
- X if (abs(n) > 999) {
- X sprintf (s, "%d,%3.3d", n/1000, abs(n) % 1000);
- X }
- X else
- X sprintf (s, "%d", n);
- X}
- X
- Xint doRadar (c, u)
- Xcraft *c;
- Xviewer *u; {
- X
- X register craft *p;
- X register int i, t, x, y;
- X register int xc, yc;
- X register double xs, ys;
- X char *buf;
- X
- X t = c->curRadarTarget = getRadarTarget (c, 0);
- X xc = (u->radarWidth + 1) / 2;
- X yc = (u->radarHeight + 1) / 2;
- X
- X/*
- X * Set drawing colors and font
- X */
- X
- X XSetForeground (u->dpy, u->gc, u->v->pixel[blackPixel]);
- X XFillRectangle (u->dpy, u->rwin, u->gc, 0, 0,
- X u->radarWidth, u->radarHeight);
- X XSetForeground (u->dpy, u->gc, u->v->pixel[whitePixel]);
- X XSetFont (u->dpy, u->gc, u->rfont->fid);
- X
- X/*
- X * Draw reference "thing"
- X */
- X
- X XDrawLine (u->dpy, u->rwin, u->gc, xc, yc, xc - 5, yc + 5);
- X XDrawLine (u->dpy, u->rwin, u->gc, xc - 10, yc, xc - 5, yc + 5);
- X XDrawLine (u->dpy, u->rwin, u->gc, xc - 10, yc, xc - 18, yc);
- X XDrawLine (u->dpy, u->rwin, u->gc, xc, yc, xc + 5, yc + 5);
- X XDrawLine (u->dpy, u->rwin, u->gc, xc + 10, yc, xc + 5, yc + 5);
- X XDrawLine (u->dpy, u->rwin, u->gc, xc + 10, yc, xc + 18, yc);
- X XDrawLine (u->dpy, u->rwin, u->gc, 0, 0, u->radarWidth-1, 0);
- X XDrawLine (u->dpy, u->rwin, u->gc, u->radarWidth-1, 0,
- X u->radarWidth-1, u->radarHeight-1);
- X XDrawLine (u->dpy, u->rwin, u->gc, 0, u->radarHeight-1,
- X u->radarWidth-1, u->radarHeight-1);
- X XDrawLine (u->dpy, u->rwin, u->gc, 0, u->radarHeight, 0, 0);
- X
- X/*
- X * Radar off?
- X */
- X
- X if (c->radarMode <= RM_STANDBY) {
- X if (c->radarMode == RM_OFF)
- X buf = "RADAR OFF";
- X else
- X buf = "RADAR STBY";
- X c->curRadarTarget = -1;
- X XDrawString (u->dpy, u->rwin, u->gc, u->rftw * 4,
- X u->fth * 2, buf, strlen(buf));
- X return 0;
- X }
- X
- X/*
- X * Plot reference lines
- X */
- X
- X i = (u->radarWidth + 3) / 4;
- X y = u->rfth + 3;
- X XDrawLine (u->dpy, u->rwin, u->gc, xc, y, xc, y+4);
- X y = u->radarHeight - 5 - u->rfth;
- X XDrawLine (u->dpy, u->rwin, u->gc, xc, y, xc, y+4);
- X
- X x = xc - i;
- X y = u->rfth + 6;
- X XDrawLine (u->dpy, u->rwin, u->gc, x, y, x, y+4);
- X y = u->radarHeight - 6 - u->rfth;
- X XDrawLine (u->dpy, u->rwin, u->gc, x, y, x, y+4);
- X XDrawString (u->dpy, u->rwin, u->gc, x-u->rftw, y+2+u->rfth,
- X thirty, 2);
- X
- X x = xc + i;
- X y = u->rfth + 6;
- X XDrawLine (u->dpy, u->rwin, u->gc, x, y, x, y+4);
- X y = u->radarHeight - 6 - u->rfth;
- X XDrawLine (u->dpy, u->rwin, u->gc, x, y, x, y+4);
- X XDrawString (u->dpy, u->rwin, u->gc, x-u->rftw, y+2+u->rfth,
- X thirty, 2);
- X
- X i = (u->radarHeight + 3) / 4;
- X x = 2;
- X XDrawLine (u->dpy, u->rwin, u->gc, x, yc, x+4, yc);
- X x = u->radarWidth - 6;
- X XDrawLine (u->dpy, u->rwin, u->gc, x, yc, x+4, yc);
- X
- X x = 5 + 2 * u->rftw;
- X y = yc - i;
- X XDrawLine (u->dpy, u->rwin, u->gc, x, y, x+4, y);
- X x = 3;
- X XDrawString (u->dpy, u->rwin, u->gc, x, y+u->rfth/3,
- X thirty, 2);
- X x = u->radarWidth - 6;
- X XDrawLine (u->dpy, u->rwin, u->gc, x, y, x+4, y);
- X
- X x = 5 + 2 * u->rftw;
- X y = yc + i;
- X XDrawLine (u->dpy, u->rwin, u->gc, x, y, x+4, y);
- X x = 3;
- X XDrawString (u->dpy, u->rwin, u->gc, x, y+u->rfth/3,
- X thirty, 2);
- X x = u->radarWidth - 6;
- X XDrawLine (u->dpy, u->rwin, u->gc, x, y, x+4, y);
- X
- X/*
- X * Now plot all targets visible to the radar system.
- X */
- X
- X for ((i=0, p=ptbl); i<MAXPLAYERS; (++i, ++p)) {
- X if (c->relValid[i] > 0 && c->relPos[i].x >= 0.0) {
- X
- X xs = c->relPos[i].y / c->relPos[i].x / scanSlope;
- X ys = c->relPos[i].z / c->relPos[i].x / scanSlope;
- X if (fabs(xs) <= 1.0 && fabs(ys) <= 1.0) {
- X x = xs * (double) xc + xc;
- X y = ys * (double) yc + yc;
- X if (t == i)
- X plotPrimaryTarget (c, u, i, x, y);
- X else
- X plotNormalTarget (u, x, y);
- X }
- X }
- X }
- X return 0;
- X}
- X
- Xint isRadarVisible (c, i)
- Xcraft *c;
- Xint i; {
- X
- X register double d, xs, ys;
- X VPoint r1;
- X
- X if (ptbl[i].type == CT_FREE || i == c->index)
- X return 0;
- X
- X/*
- X * Is the set on ?
- X */
- X
- X if (c->radarMode <= RM_STANDBY) {
- X ptbl[i].rval[c->index] = 0.0;
- X return 0;
- X }
- X
- X/*
- X * Calculate the coordinates of the target relative to the craft's frame.
- X */
- X
- X r1.x = ptbl[i].Sg.x - c->Sg.x;
- X r1.y = ptbl[i].Sg.y - c->Sg.y;
- X r1.z = ptbl[i].Sg.z - c->Sg.z;
- X VTransform (&r1, &(c->Itrihedral), &(c->relPos[i]));
- X
- X ptbl[i].rval[c->index] = 0.0;
- X
- X if (c->relPos[i].x <= 0.0)
- X return 0;
- X
- X d = c->relPos[i].x * scanSlope;
- X xs = c->relPos[i].y / d;
- X ys = c->relPos[i].z / d;
- X
- X/*
- X * if the absolute values of xs and ys are both less than 1.0, then
- X * we are painting this target with radar energy. Estimate the value of
- X * the energy that the target sees.
- X */
- X
- X if ((fabs(xs) <= 1.0) && (fabs(ys) <= 1.0)) {
- X d = mag(c->relPos[i]);
- X ptbl[i].rval[c->index] = c->cinfo->radarOutput / (d * d);
- X if (d >= c->cinfo->radarDRange)
- X return 0;
- X else if (d >= c->cinfo->radarTRange)
- X return 1;
- X else
- X return 2;
- X }
- X else
- X return 0;
- X
- X}
- X
- Xint getRadarTarget (c, new)
- Xcraft *c;
- Xint new; {
- X
- X register int i, minID;
- X register double minD, d;
- X
- X for (i=0; i<MAXPLAYERS; ++i)
- X c->relValid[i] = isRadarVisible(c, i);
- X
- X if (new == 0) {
- X i = c->curRadarTarget;
- X if (i != -1 && c->relValid[i] != 0)
- X return i;
- X }
- X
- X minD = 1000.0 * NM;
- X minID = -1;
- X for (i=0; i<MAXPLAYERS; ++i) {
- X if (c->relValid[i] == 2) {
- X if (new == 1 && i == c->curRadarTarget)
- X continue;
- X d = mag (c->relPos[i]);
- X if (d < minD) {
- X minD = d;
- X minID = i;
- X }
- X }
- X }
- X
- X return minID;
- X}
- X
- Xvoid doDroneRadar (c)
- Xcraft *c; {
- X
- X register int i, j;
- X
- X for (i=0; i<MAXPLAYERS; ++i)
- X j = isRadarVisible(c, i);
- X}
- X
- Xvoid plotNormalTarget (u, x, y)
- Xviewer *u;
- Xint x, y; {
- X
- X XDrawLine (u->dpy, u->rwin, u->gc, x-2, y-2, x-2, y+2);
- X XDrawLine (u->dpy, u->rwin, u->gc, x-2, y+2, x+2, y+2);
- X XDrawLine (u->dpy, u->rwin, u->gc, x+2, y+2, x+2, y-2);
- X XDrawLine (u->dpy, u->rwin, u->gc, x+2, y-2, x-2, y-2);
- X}
- X
- Xextern double heading();
- X
- Xvoid plotPrimaryTarget (c, u, i, x, y)
- Xcraft *c;
- Xviewer *u;
- Xint i;
- Xint x, y; {
- X
- X int xp, yp;
- X char s[16];
- X VPoint rel, deltaV;
- X double d, cl;
- X
- X xp = 150 * u->radarWidth / RADAR_WINDOW_WIDTH;
- X yp = 150 * u->radarHeight / RADAR_WINDOW_HEIGHT;
- X
- X XFillRectangle (u->dpy, u->rwin, u->gc, x-3, y-3, 7, 7);
- X
- X/*
- X * Heading of target
- X */
- X
- X sprintf (s, " %3.3d \007", (int) (RADtoDEG(ptbl[i].curHeading)));
- X XDrawString (u->dpy, u->rwin, u->gc, xp, yp, s, strlen(s));
- X
- X/*
- X * Relative heading to target.
- X */
- X
- X rel.x = ptbl[i].Sg.x - c->Sg.x;
- X rel.y = ptbl[i].Sg.y - c->Sg.y;
- X rel.z = ptbl[i].Sg.z - c->Sg.z;
- X sprintf (s, " %3.3d R", (int) RADtoDEG(heading(&rel)));
- X XDrawString (u->dpy, u->rwin, u->gc, xp, yp+u->rfth, s, strlen(s));
- X
- X/*
- X * Closure rate
- X */
- X
- X deltaV.x = ptbl[i].Cg.x - c->Cg.x;
- X deltaV.y = ptbl[i].Cg.y - c->Cg.y;
- X deltaV.z = ptbl[i].Cg.z - c->Cg.z;
- X d = mag (rel);
- X cl = - (deltaV.x * rel.x + deltaV.y * rel.y + deltaV.z + rel.z) /
- X d / NM * 3600.0;
- X c->targetDistance = d;
- X c->targetClosure = cl;
- X sprintf (s, "%5d C", (int)cl);
- X XDrawString (u->dpy, u->rwin, u->gc, xp, yp+2*u->rfth, s, strlen(s));
- X
- X/*
- X * Range to target
- X */
- X
- X xp = 40 * u->radarWidth / RADAR_WINDOW_WIDTH;
- X yp = u->rfth + 4;
- X sprintf (s, "%d", (int) (d / NM));
- X XDrawString (u->dpy, u->rwin, u->gc, xp, yp, s, strlen(s));
- X
- X/*
- X * Altitude of target
- X */
- X
- X xp = 150 * u->radarWidth / RADAR_WINDOW_WIDTH;
- X yp = u->rfth + 4;
- X sprintf (s, "%d", (int) (- ptbl[i].Sg.z / 1000.0));
- X XDrawString (u->dpy, u->rwin, u->gc, xp, yp, s, strlen(s));
- X}
- X
- X/*
- X * doTEWS : update the threat display for player i.
- X */
- X
- Xvoid doTEWS (c, u)
- Xcraft *c;
- Xviewer *u; {
- X
- X register int i, x, y;
- X VPoint rel, tmp;
- X double m, unit;
- X
- X XSetForeground (u->dpy, u->gc, u->v->pixel[blackPixel]);
- X XFillRectangle (u->dpy, u->win, u->gc, u->TEWSx-u->TEWSSize/2,
- X u->TEWSy-u->TEWSSize/2, u->TEWSSize, u->TEWSSize);
- X XSetForeground (u->dpy, u->gc, u->v->pixel[whitePixel]);
- X
- X XDrawArc(u->dpy, u->win, u->gc, u->TEWSx-u->TEWSSize/2,
- X u->TEWSy-u->TEWSSize/2, u->TEWSSize, u->TEWSSize,
- X 0, 360*64);
- X
- X for (i=0; i<MAXPLAYERS; ++i) {
- X
- X if (c->index == i)
- X continue;
- X
- X if (c->rval[i] > c->cinfo->TEWSThreshold) {
- X tmp.x = ptbl[i].Sg.x - c->Sg.x;
- X tmp.y = ptbl[i].Sg.y - c->Sg.y;
- X tmp.z = ptbl[i].Sg.z - c->Sg.z;
- X VTransform (&tmp, &(c->Itrihedral), &(rel));
- X m = mag(rel);
- X rel.x /= m;
- X rel.y /= m;
- X rel.z /= m;
- X unit = sqrt (rel.x * rel.x + rel.y * rel.y);
- X if (unit == 0.0) {
- X rel.x = 1.0;
- X rel.y = 0.0;
- X }
- X x = u->TEWSx + (int) (rel.y * u->TEWSSize * 0.4 / unit);
- X y = u->TEWSy - (int) (rel.x * u->TEWSSize * 0.4 / unit);
- X if (c->team == ptbl[i].team) {
- X XDrawLine (u->dpy, u->win, u->gc, x-2, y-2, x-2, y+2);
- X XDrawLine (u->dpy, u->win, u->gc, x-2, y+2, x+2, y+2);
- X XDrawLine (u->dpy, u->win, u->gc, x+2, y+2, x+2, y-2);
- X XDrawLine (u->dpy, u->win, u->gc, x+2, y-2, x-2, y-2);
- X }
- X else
- X XFillRectangle (u->dpy, u->win, u->gc, x-3, y-3, 7, 7);
- X }
- X }
- X}
- *-*-END-of-./fsim/doRadar.c-*-*
- echo x - ./fsim/flaps3.xbm
- sed 's/^X//' >./fsim/flaps3.xbm <<'*-*-END-of-./fsim/flaps3.xbm-*-*'
- X#define flaps3_width 64
- X#define flaps3_height 32
- X#define flaps3_x_hot -1
- X#define flaps3_y_hot -1
- Xstatic char flaps3_bits[] = {
- X 0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xdd, 0xfd,
- X 0x1f, 0x00, 0x00, 0x00, 0x20, 0xef, 0xee, 0xee, 0xee, 0xff, 0x03, 0x00,
- X 0x30, 0x77, 0x77, 0x77, 0x77, 0xf7, 0x3f, 0x00, 0x38, 0xbb, 0xbb, 0xbb,
- X 0xbb, 0x7b, 0x00, 0x00, 0x28, 0xdf, 0xdd, 0xdd, 0xdd, 0x3d, 0x0c, 0x00,
- X 0x6c, 0xfe, 0xff, 0xff, 0xff, 0x1f, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x38, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00};
- *-*-END-of-./fsim/flaps3.xbm-*-*
- echo x - ./fsim/flaps0.xbm
- sed 's/^X//' >./fsim/flaps0.xbm <<'*-*-END-of-./fsim/flaps0.xbm-*-*'
- X#define flaps0_width 64
- X#define flaps0_height 32
- X#define flaps0_x_hot 4
- X#define flaps0_y_hot 25
- Xstatic char flaps0_bits[] = {
- X 0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0xdf, 0xdd, 0xfd,
- X 0x1f, 0x00, 0x00, 0x00, 0x60, 0xef, 0xee, 0xee, 0xee, 0x1f, 0x00, 0x00,
- X 0x70, 0x77, 0x77, 0x77, 0x77, 0xf7, 0x03, 0x00, 0x50, 0xbb, 0xbb, 0xbb,
- X 0xbb, 0x7b, 0x7f, 0x00, 0x50, 0xdf, 0xdd, 0xdd, 0xdd, 0xbd, 0xff, 0x07,
- X 0xe0, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00};
- *-*-END-of-./fsim/flaps0.xbm-*-*
- echo x - ./fsim/exp.xbm
- sed 's/^X//' >./fsim/exp.xbm <<'*-*-END-of-./fsim/exp.xbm-*-*'
- X#define exp_width 64
- X#define exp_height 64
- Xstatic char exp_bits[] = {
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
- X 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xc2, 0x61, 0x00, 0x03,
- X 0x00, 0x00, 0x00, 0x20, 0xc2, 0x21, 0x80, 0x03, 0x00, 0x00, 0x1c, 0x40,
- X 0xc0, 0x21, 0x80, 0x03, 0x00, 0x80, 0x30, 0x40, 0x80, 0x38, 0x80, 0x01,
- X 0x00, 0x80, 0x09, 0xa3, 0x82, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x11, 0x02,
- X 0xc2, 0x22, 0x40, 0x00, 0x00, 0x00, 0x86, 0x84, 0xc4, 0x00, 0x40, 0x00,
- X 0x00, 0x00, 0x80, 0x14, 0xc6, 0x02, 0x50, 0x00, 0xc0, 0x00, 0x0c, 0x8a,
- X 0xe9, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xa8, 0x18, 0xd3, 0x75, 0x02, 0x08,
- X 0x80, 0x01, 0xe0, 0x04, 0x3e, 0x03, 0x01, 0x04, 0x00, 0x05, 0x10, 0x92,
- X 0x8a, 0x0e, 0x06, 0x07, 0x00, 0x5c, 0x81, 0xf1, 0xef, 0x1b, 0x00, 0x02,
- X 0x00, 0x18, 0x80, 0x0c, 0xcf, 0x0b, 0xa5, 0x00, 0x00, 0x60, 0x88, 0x17,
- X 0xef, 0x07, 0x87, 0x00, 0x00, 0xa0, 0x21, 0x79, 0xc7, 0x55, 0x23, 0x00,
- X 0x00, 0x90, 0x40, 0x3f, 0xeb, 0x1e, 0x07, 0x00, 0x00, 0x00, 0x40, 0x9f,
- X 0xef, 0xbc, 0x17, 0x00, 0x00, 0xa4, 0x05, 0x9e, 0x2f, 0x71, 0x06, 0x00,
- X 0x00, 0x08, 0x00, 0x6f, 0x5f, 0xbc, 0x02, 0x00, 0x00, 0x40, 0xf9, 0x3c,
- X 0x01, 0xbf, 0x03, 0x00, 0x00, 0x00, 0xac, 0xb3, 0x5f, 0xfd, 0x03, 0x00,
- X 0x00, 0x00, 0xfc, 0xbb, 0x4f, 0xa7, 0x0b, 0x10, 0x00, 0x00, 0xd7, 0xad,
- X 0xc2, 0x9a, 0x0d, 0x04, 0x00, 0x40, 0xfb, 0xc9, 0x98, 0x79, 0x11, 0x19,
- X 0x00, 0xc0, 0xfa, 0x8d, 0x18, 0xcb, 0x3b, 0x02, 0x00, 0x80, 0xdd, 0x0d,
- X 0x88, 0x0b, 0x5f, 0x08, 0x00, 0xc0, 0x2d, 0x39, 0x60, 0x1b, 0xfa, 0x00,
- X 0x00, 0xd0, 0x7e, 0x97, 0xc1, 0x73, 0x58, 0x03, 0x00, 0x6b, 0xb1, 0x0e,
- X 0x01, 0xfb, 0x1c, 0x02, 0x00, 0x80, 0xdf, 0x15, 0x81, 0x54, 0xec, 0x02,
- X 0x00, 0x00, 0xfe, 0xff, 0xa2, 0xd9, 0x3c, 0x00, 0x00, 0x80, 0x7f, 0xde,
- X 0xc2, 0xac, 0xb4, 0x02, 0x00, 0x00, 0x33, 0xde, 0xec, 0x0b, 0x3e, 0x02,
- X 0x00, 0xc0, 0x6c, 0x17, 0xe1, 0xe7, 0xbc, 0x03, 0x00, 0x50, 0x76, 0xfd,
- X 0xf7, 0xfe, 0xff, 0x00, 0x00, 0x1c, 0x5d, 0x9c, 0xfa, 0xba, 0xe9, 0x00,
- X 0x00, 0x05, 0x63, 0xcc, 0x0e, 0xec, 0x99, 0x00, 0x00, 0x46, 0x82, 0x94,
- X 0x80, 0xff, 0x3a, 0x00, 0x80, 0x03, 0xe3, 0xd7, 0x89, 0xcb, 0x27, 0x00,
- X 0x00, 0x80, 0x21, 0x8f, 0x84, 0xc9, 0x3f, 0x00, 0x00, 0x00, 0x04, 0xff,
- X 0xcc, 0xdb, 0xe3, 0x01, 0x00, 0xa0, 0x00, 0xa6, 0x7e, 0x0b, 0xb1, 0x07,
- X 0x00, 0x00, 0x00, 0x19, 0x6f, 0x6e, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x9c,
- X 0xfa, 0x53, 0x06, 0x02, 0x00, 0x00, 0x00, 0x04, 0xe7, 0xa9, 0x00, 0x06,
- X 0x00, 0x00, 0x80, 0x43, 0x14, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
- X 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x0c, 0x40, 0x00, 0x00,
- X 0x00, 0x00, 0x40, 0x05, 0x08, 0x20, 0x01, 0x00, 0x00, 0x00, 0x60, 0x00,
- X 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x03, 0x00,
- X 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00,
- X 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x10, 0x00,
- X 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x14, 0x00,
- X 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x30, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00};
- *-*-END-of-./fsim/exp.xbm-*-*
- --
- Riley Rainey Internet: riley@mips.com
- MIPS Computer Systems Phone: +1 214 770-7979
- Dallas, Texas
-
- dan
- ----------------------------------------------------
- O'Reilly && Associates argv@sun.com / argv@ora.com
- Opinions expressed reflect those of the author only.
-